# -*- coding: utf-8 -*-

from main.database import Column, Model, SurrogatePK, db, reference_col, relationship

import datetime as dt

from main.utils import Serializer


class Product(SurrogatePK, Model,Serializer):
    """表名称system_config
    name：产品名称
    price：价格
    earnings ：收益
    cycle ：周期
    enable ：启用
    product_sum :总购买数量
    is_give : 是否是赠送 ：

    """

    #json序列化字段
    __public__ = ['id','name','price','earnings','cycle']

    __tablename__ = 'products'
    name = Column(db.String(80),nullable=False)
    price = Column(db.String(80),nullable=False)
    earnings = Column(db.String(80),nullable='0')
    cycle = Column(db.Integer(),default=30)
    enable = Column(db.Boolean,default=True)
    product_sum = Column(db.Integer(),default=0)
    is_give = Column(db.Boolean,default=False)



class ProductHistory(SurrogatePK, Model,Serializer):
    """
    矿机历史表

    """

    __public__ = ['id','user_id','product_id','surplus','earnings_total']

    __tablename__ = 'product_history'

    user_id = Column(db.Integer(),default=0)
    product_id = Column(db.Integer(),default=0)
    #剩余周期
    surplus = Column(db.Integer(),default=0)
    #该矿机每日收益
    earnings = Column(db.String(80),nullable='0.00')
    #累计收益
    earnings_total = Column(db.String(80),nullable='0.00')
    #矿机名称
    product_name = Column(db.String(80))
    #上次计算时间
    last_time =  Column(db.DateTime, nullable=False)
    #是否启用
    is_enable = Column(db.Boolean,default=True)
    #是否结算结束
    is_finish = Column(db.Boolean,default=False)
    #添加记录的描述   是赠送呢 还是购买
    add_msg = Column(db.String(80))




class DetailList(SurrogatePK, Model,Serializer):
    """
    明细表
    """

    __public__ = ['id','user_id','user_username','type_msg','change_first',"change_last"]

    __tablename__ = 'detail_list'


    user_id = Column(db.Integer(),default=0)
    user_username = Column(db.String(80))
    #变动类型
    type_msg = Column(db.String(80))
    #变动前
    change_first = Column(db.Numeric(precision=10,scale=5,asdecimal=True, decimal_return_scale=None),default=0)
    #变动后
    change_last = Column(db.Numeric(precision=10,scale=5,asdecimal=True, decimal_return_scale=None),default=0)
    #变动的金额
    change_num =  Column(db.Numeric(precision=10,scale=5,asdecimal=True, decimal_return_scale=None),default=0)
    #备注
    note = Column(db.String(80))
    #时间
    create_at = Column(db.DateTime)
    #操作者  只存名称 不存id  因为可能是系统操作
    change_user = Column(db.String(80))







